|
RAIS
3.2
|
00001 00028 using System; 00029 using System.Collections; 00030 using System.Collections.Generic; 00031 using System.Data; 00032 using System.Globalization; 00033 using System.Text; 00034 using System.Web.UI; 00035 using System.Web.UI.HtmlControls; 00036 using System.Web.UI.WebControls; 00037 00038 using RAIS.ApplicationLogicLayer; 00039 using RAIS.Common.DynamicMaskManagement; 00040 using RAIS.Common.TableManagement; 00041 using RAIS.Common.UserManagement; 00042 using PageAccessRights = System.Collections.Generic.Dictionary<string, RAIS.UI.Common.UserManagement.AccessRight>; 00043 using ConsistencyChecks = System.Collections.Generic.Dictionary<string, RAIS.Common.DynamicMaskManagement.ConsistencyCheck>; 00044 using RecordTypes = System.Collections.Generic.Dictionary<string, RAIS.Common.DynamicMaskManagement.ConsistencyCheck.RecordTypeData>; 00045 00046 namespace RAIS.UI.Common 00047 { 00051 public class DynamicMaskManagement 00052 { 00053 //********************************************************************* 00054 #region Enums 00055 public enum FormMode 00056 { 00057 Add, 00058 Delete, 00059 Edit, 00060 View, 00061 UndoAdd, 00062 Query 00063 } 00064 00065 public enum ApplyPhase 00066 { 00067 Check, 00068 Apply 00069 } 00070 #endregion 00071 //********************************************************************* 00072 #region Initialize Controls Methods 00073 00079 public static void AddFormLinksControls(System.Web.UI.HtmlControls.HtmlGenericControl control1, DynamicMaskData dynamicMaskData, FormMode formMode, EventHandler onClickHandler) 00080 { 00081 int startLinkID = 0; 00082 control1.Controls.Clear(); 00083 Panel control = new Panel(); 00084 control.Style["width"] = "100%"; 00085 00086 if (dynamicMaskData.DynamicMasks.Count > startLinkID) 00087 { 00088 int maxValue = (dynamicMaskData.IsMultipaged) 00089 ? dynamicMaskData.DynamicMasks.Count 00090 : 1; 00091 for (int i = startLinkID; i < maxValue; i++) 00092 { 00093 if (dynamicMaskData.DynamicMasks[i].Type == DynamicMask.DynamicMaskType.ListWithFilter) 00094 continue; 00095 00096 //if (dynamicMaskData.DynamicMasks[i].Table.Type==RAIS.Common.TableManagement.Table.TableType.Authorization 00097 // && dynamicMaskData.DynamicMasks[i].Table.Fields.Count==1) 00098 // continue; 00099 00100 if (control.Controls.Count > 0) 00101 { 00102 Label emptyLabel = new Label(); 00103 emptyLabel.Text = " " + "|" + " "; 00104 control.Controls.Add(emptyLabel); 00105 } 00106 00107 Label lblFormName = new Label(); 00108 HtmlControl nobr = new HtmlGenericControl("nobr"); 00109 lblFormName.Text = dynamicMaskData.DynamicMasks[i].Name; 00110 00111 lblFormName.Font.Bold = (i == dynamicMaskData.TabID); 00112 00113 //if (i == dynamicMaskData.TabID || dynamicMaskData.IsAddRow) 00114 if (i == dynamicMaskData.TabID 00115 || formMode == FormMode.Add 00116 || formMode == FormMode.Edit) 00117 { 00118 nobr.Controls.Add(lblFormName); 00119 control.Controls.Add(nobr); 00120 } 00121 else 00122 { 00123 HtmlAnchor link = new HtmlAnchor(); 00124 link.ID = "Link" + i.ToString(); 00125 dynamicMaskData.DynamicMasks[i].ControlName = link.ID; 00126 link.Name = dynamicMaskData.DynamicMasks[i].Name; 00127 link.ServerClick += onClickHandler; 00128 link.Controls.Add(lblFormName); 00129 nobr.Controls.Add(link); 00130 control.Controls.Add(nobr); 00131 } 00132 } 00133 } 00134 control1.Controls.Add(control); 00135 } 00143 public static void InitializeNameList(ListBox list, DynamicMaskData dynamicMaskData, FormMode currentFormMode, int initialSelectedIndex) 00144 { 00145 bool setFirstElement = (list.SelectedItem == null); 00146 bool firstElement = true; 00147 int selectedItemKey = (list.SelectedItem == null) ? 0 : int.Parse(list.SelectedItem.Value); 00148 int selectedIndex = list.SelectedIndex; 00149 00150 if (dynamicMaskData != null) 00151 { 00152 list.Items.Clear(); 00153 foreach (KeyValuePair<int, string> fieldValue in dynamicMaskData.SingleListFieldValues) 00154 { 00155 ListItem listItem = new ListItem(fieldValue.Value, fieldValue.Key.ToString()); 00156 if (currentFormMode != FormMode.Add 00157 && currentFormMode != FormMode.Delete 00158 && (setFirstElement && firstElement 00159 || (selectedItemKey != 0) && (fieldValue.Key == selectedItemKey))) 00160 { 00161 listItem.Selected = true; 00162 } 00163 00164 list.Items.Add(listItem); 00165 00166 firstElement = false; 00167 } 00168 00169 if (currentFormMode == FormMode.Add) 00170 { 00171 ListItem listItem = new ListItem(string.Empty, 0.ToString()); 00172 listItem.Selected = true; 00173 list.Items.Add(listItem); 00174 } 00175 00176 if (currentFormMode == FormMode.Delete) 00177 { 00178 selectedIndex = (selectedIndex >= list.Items.Count) ? list.Items.Count - 1 : selectedIndex; 00179 if (selectedIndex != -1) 00180 list.Items[selectedIndex].Selected = true; 00181 } 00182 00183 if (currentFormMode == FormMode.UndoAdd) 00184 { 00185 if (initialSelectedIndex != -1) 00186 list.Items[initialSelectedIndex].Selected = true; 00187 } 00188 00189 UI.Common.PageManagement.InitializeListboxTooltips(list); 00190 } 00191 } 00198 public static void AddFilterControls(System.Web.UI.HtmlControls.HtmlTable table, DynamicMaskData dynamicMaskData, EventHandler selectHandler) 00199 { 00200 int controlNumber = 0; 00201 foreach (KeyValuePair<int, DynamicMaskFilterData> kvp in dynamicMaskData.FiltersData) 00202 { 00203 DynamicMaskFilterData filterData = kvp.Value; 00204 DynamicMaskFilter.FilterType type = filterData.DynamicMaskFilter.Type; 00205 00206 if (filterData.DynamicMaskFilter.VisibleOnForm) 00207 { 00208 // Row 00209 HtmlTableRow row = new HtmlTableRow(); 00210 00211 // Col1 00212 HtmlTableCell col1 = new HtmlTableCell(); 00213 col1.Attributes[Constants.ATTRIBUTE_CLASS_NAME] = Constants.CSS_CLASS_FILTER_LABEL; 00214 00215 Label filterLabel = new Label(); 00216 filterLabel.Font.Bold = 00217 (dynamicMaskData.DynamicMask.Type == DynamicMask.DynamicMaskType.ReportMask 00218 && filterData.DynamicMaskFilter.UseInQuery); 00219 filterLabel.Text = (type == DynamicMaskFilter.FilterType.Lookup) 00220 ? filterData.DynamicMaskFilter.Name 00221 : RAIS.Common.Constants.DATE_FROM_LABEL_TEXT; 00222 col1.Controls.Add(filterLabel); 00223 row.Cells.Add(col1); 00224 00225 // Col2 00226 HtmlTableCell col2 = new HtmlTableCell(); 00227 00228 if (type == DynamicMaskFilter.FilterType.Lookup) 00229 { 00230 DropDownList ddList = new DropDownList(); 00231 ddList.ID = "ddl" + (controlNumber++).ToString(); 00232 filterData.ControlName = ddList.ID; 00233 if (filterData.LookupValues != null) 00234 { 00235 int selectedKey = 0; 00236 if (filterData.DynamicMaskFilter.Name == RAIS.Common.Constants.FACILITY_PARAMETER_NAME) 00237 selectedKey = dynamicMaskData.SelectedFacilityID; 00238 if (filterData.DynamicMaskFilter.Name == RAIS.Common.Constants.DEPARTMENT_PARAMETER_NAME) 00239 selectedKey = dynamicMaskData.SelectedDepartmentID; 00240 InitializeFilterDropDownList(ddList, filterData, selectedKey); 00241 } 00242 ddList.CssClass = Constants.CSS_CLASS_FILTER_DROPDOWN; 00243 if (filterData.ChildFilters != null 00244 || filterData.DynamicMaskFilter.Name == RAIS.Common.Constants.FACILITY_PARAMETER_NAME) 00245 { 00246 ddList.AutoPostBack = true; 00247 ddList.SelectedIndexChanged += selectHandler; 00248 } 00249 filterLabel.AssociatedControlID = ddList.ID; 00250 col2.Controls.Add(ddList); 00251 } 00252 00253 if (type == DynamicMaskFilter.FilterType.DatesRage) 00254 { 00255 TextBox textBoxFrom = new TextBox(); 00256 textBoxFrom.ID = "txt" + (controlNumber++).ToString(); 00257 textBoxFrom.Text = filterData.DateFrom.ToShortDateString(); 00258 filterData.ControlName = textBoxFrom.ID; 00259 filterLabel.AssociatedControlID = textBoxFrom.ID; 00260 col2.Controls.Add(textBoxFrom); 00261 00262 Label dateFromFormatLabel = new Label(); 00263 dateFromFormatLabel.Text = GetNationalDateFormatString(false); 00264 col2.Controls.Add(dateFromFormatLabel); 00265 00266 Label dateUntilLabel = new Label(); 00267 dateUntilLabel.Text = "     " + RAIS.Common.Constants.DATE_UNTIL_LABEL_TEXT + " "; 00268 dateUntilLabel.Font.Bold = true; 00269 col2.Controls.Add(dateUntilLabel); 00270 00271 TextBox textBoxUntil = new TextBox(); 00272 textBoxUntil.ID = "txt" + (controlNumber++).ToString() + RAIS.Common.Constants.DATE_UNTIL_LABEL_TEXT; 00273 textBoxUntil.Text = filterData.DateUntil.ToShortDateString(); 00274 filterData.ControlUntilName = textBoxUntil.ID; 00275 col2.Controls.Add(textBoxUntil); 00276 00277 Label dateUntilFormatLabel = new Label(); 00278 dateUntilFormatLabel.Text = GetNationalDateFormatString(false); 00279 col2.Controls.Add(dateUntilFormatLabel); 00280 } 00281 00282 row.Cells.Add(col2); 00283 table.Rows.Add(row); 00284 } 00285 } 00286 } 00287 00288 public static void AddFilterControlsWithoutChildFilter(System.Web.UI.HtmlControls.HtmlTable table, DynamicMaskData dynamicMaskData, EventHandler selectHandler) 00289 { 00290 int controlNumber = 0; 00291 foreach (KeyValuePair<int, DynamicMaskFilterData> kvp in dynamicMaskData.FiltersData) 00292 { 00293 DynamicMaskFilterData filterData = kvp.Value; 00294 DynamicMaskFilter.FilterType type = filterData.DynamicMaskFilter.Type; 00295 00296 if (filterData.DynamicMaskFilter.VisibleOnForm) 00297 { 00298 // Row 00299 HtmlTableRow row = new HtmlTableRow(); 00300 00301 // Col1 00302 HtmlTableCell col1 = new HtmlTableCell(); 00303 col1.Attributes[Constants.ATTRIBUTE_CLASS_NAME] = Constants.CSS_CLASS_FILTER_LABEL; 00304 00305 Label filterLabel = new Label(); 00306 filterLabel.Font.Bold = (dynamicMaskData.DynamicMask.Type == DynamicMask.DynamicMaskType.ReportMask 00307 && filterData.DynamicMaskFilter.UseInQuery); 00308 filterLabel.Text = (type == DynamicMaskFilter.FilterType.Lookup) 00309 ? filterData.DynamicMaskFilter.Name 00310 : RAIS.Common.Constants.DATE_FROM_LABEL_TEXT; 00311 col1.Controls.Add(filterLabel); 00312 row.Cells.Add(col1); 00313 00314 // Col2 00315 HtmlTableCell col2 = new HtmlTableCell(); 00316 00317 if (type == DynamicMaskFilter.FilterType.Lookup) 00318 { 00319 DropDownList ddList = new DropDownList(); 00320 ddList.ID = "ddl" + (controlNumber++).ToString(); 00321 filterData.ControlName = ddList.ID; 00322 if (filterData.LookupValues != null) 00323 { 00324 int selectedKey = 0; 00325 if (filterData.DynamicMaskFilter.Name == RAIS.Common.Constants.FACILITY_PARAMETER_NAME) 00326 selectedKey = dynamicMaskData.SelectedFacilityID; 00327 if (filterData.DynamicMaskFilter.Name == RAIS.Common.Constants.DEPARTMENT_PARAMETER_NAME) 00328 selectedKey = dynamicMaskData.SelectedDepartmentID; 00329 InitializeFilterDropDownList(ddList, filterData, selectedKey); 00330 } 00331 ddList.CssClass = Constants.CSS_CLASS_FILTER_DROPDOWN; 00332 if (filterData.ChildFilters != null 00333 || filterData.DynamicMaskFilter.Name == RAIS.Common.Constants.FACILITY_PARAMETER_NAME) 00334 { 00335 ddList.AutoPostBack = true; 00336 ddList.SelectedIndexChanged += selectHandler; 00337 } 00338 filterLabel.AssociatedControlID = ddList.ID; 00339 col2.Controls.Add(ddList); 00340 } 00341 00342 if (type == DynamicMaskFilter.FilterType.DatesRage) 00343 { 00344 TextBox textBoxFrom = new TextBox(); 00345 textBoxFrom.ID = "txt" + (controlNumber++).ToString(); 00346 textBoxFrom.Text = filterData.DateFrom.ToShortDateString(); 00347 filterData.ControlName = textBoxFrom.ID; 00348 filterLabel.AssociatedControlID = textBoxFrom.ID; 00349 col2.Controls.Add(textBoxFrom); 00350 00351 Label dateFromFormatLabel = new Label(); 00352 dateFromFormatLabel.Text = GetNationalDateFormatString(false); 00353 col2.Controls.Add(dateFromFormatLabel); 00354 00355 Label dateUntilLabel = new Label(); 00356 dateUntilLabel.Text = "     " + RAIS.Common.Constants.DATE_UNTIL_LABEL_TEXT + " "; 00357 dateUntilLabel.Font.Bold = true; 00358 col2.Controls.Add(dateUntilLabel); 00359 00360 TextBox textBoxUntil = new TextBox(); 00361 textBoxUntil.ID = "txt" + (controlNumber++).ToString() + RAIS.Common.Constants.DATE_UNTIL_LABEL_TEXT; 00362 textBoxUntil.Text = filterData.DateUntil.ToShortDateString(); 00363 filterData.ControlUntilName = textBoxUntil.ID; 00364 col2.Controls.Add(textBoxUntil); 00365 00366 Label dateUntilFormatLabel = new Label(); 00367 dateUntilFormatLabel.Text = GetNationalDateFormatString(false); 00368 col2.Controls.Add(dateUntilFormatLabel); 00369 } 00370 00371 if (!filterData.DynamicMaskFilter.UseInQuery) 00372 row.Visible = false; 00373 row.Cells.Add(col2); 00374 table.Rows.Add(row); 00375 } 00376 } 00377 } 00378 00379 public static void InitializeFilterControls(System.Web.UI.HtmlControls.HtmlTable table, DynamicMaskData dynamicMaskData) 00380 { 00381 int rowNumber = 0; 00382 foreach (KeyValuePair<int, DynamicMaskFilterData> kvp in dynamicMaskData.FiltersData) 00383 { 00384 DynamicMaskFilterData filterData = kvp.Value; 00385 if (filterData.DynamicMaskFilter.Type == DynamicMaskFilter.FilterType.Lookup) 00386 { 00387 DropDownList ddList = (DropDownList)table.Rows[rowNumber++].Cells[1].Controls[0]; 00388 InitializeFilterDropDownList(ddList, filterData, 0); 00389 } 00390 00391 if (filterData.DynamicMaskFilter.Type == DynamicMaskFilter.FilterType.DatesRage) 00392 { 00393 TextBox textBoxFrom = (TextBox)table.Rows[rowNumber++].Cells[1].Controls[0]; 00394 textBoxFrom.Text = filterData.DateFrom.ToString(); 00395 TextBox textBoxUntil = (TextBox)table.Rows[rowNumber++].Cells[1].Controls[3]; 00396 textBoxUntil.Text = filterData.DateUntil.ToString(); 00397 } 00398 } 00399 } 00400 00401 public static void InitializeChildFilterControls(System.Web.UI.HtmlControls.HtmlTable table, DynamicMaskData dynamicMaskData, object sender) 00402 { 00403 DynamicMaskFilterData filterData = FindFilterDataByControlName(dynamicMaskData, sender); 00404 if (filterData != null) 00405 { 00406 if (filterData.ChildFilters != null) 00407 { 00408 foreach (KeyValuePair<int, DynamicMaskFilterData> kvp in filterData.ChildFilters) 00409 { 00410 DynamicMaskFilterData childFilterData = kvp.Value; 00411 00412 int childFilterRowNumber = GetFilterRowNumber(dynamicMaskData, childFilterData); 00413 00414 DropDownList ddList = (DropDownList)table.Rows[childFilterRowNumber].Cells[1].Controls[0]; 00415 InitializeFilterDropDownList(ddList, childFilterData, 0); 00416 } 00417 } 00418 } 00419 } 00420 00421 public static void InitializeFilterDropDownList(DropDownList ddl, DynamicMaskFilterData filterData, int selectedKey) 00422 { 00423 00424 ddl.Items.Clear(); 00425 ddl.Items.Add(new ListItem("", "0")); 00426 ddl.Items[ddl.Items.Count - 1].Selected = (selectedKey == 0); 00427 if (filterData.LookupValues != null) 00428 { 00429 foreach (KeyValuePair<int, string> lookupValue in filterData.LookupValues) 00430 { 00431 ddl.Items.Add(new ListItem(lookupValue.Value, lookupValue.Key.ToString())); 00432 ddl.Items[ddl.Items.Count - 1].Selected = (selectedKey == lookupValue.Key); 00433 } 00434 } 00435 } 00442 public static void InitializeFilterObjectsFromFilterControls(System.Web.UI.HtmlControls.HtmlTable table, DynamicMaskData dynamicMaskData) 00443 { 00444 int rowNumber = 0; 00445 00446 foreach (KeyValuePair<int, DynamicMaskFilterData> kvp in dynamicMaskData.FiltersData) 00447 { 00448 DynamicMaskFilterData filterData = kvp.Value; 00449 00450 if (filterData.DynamicMaskFilter.VisibleOnForm) 00451 { 00452 if (filterData.DynamicMaskFilter.Type == DynamicMaskFilter.FilterType.Lookup) 00453 { 00454 DropDownList ddList = (DropDownList)table.Rows[rowNumber].Cells[1].Controls[0]; 00455 if (ddList.SelectedItem != null) 00456 { 00457 filterData.CurrentLookupValue = int.Parse(ddList.SelectedItem.Value); 00458 filterData.CurrentLookupText = ddList.SelectedItem.Text; 00459 } 00460 } 00461 00462 if (filterData.DynamicMaskFilter.Type == DynamicMaskFilter.FilterType.DatesRage) 00463 { 00464 TextBox textBoxFrom = (TextBox)table.Rows[rowNumber].Cells[1].Controls[0]; 00465 filterData.DateFrom = DateTime.Parse(textBoxFrom.Text); 00466 TextBox textBoxUntil = (TextBox)table.Rows[rowNumber].Cells[1].Controls[3]; 00467 filterData.DateUntil = DateTime.Parse(textBoxUntil.Text); 00468 } 00469 00470 rowNumber++; 00471 } 00472 } 00473 } 00474 00475 public static void InitializeListItems(GridView gridView, DynamicMaskData dynamicMaskData) 00476 { 00477 string translationContext = gridView.Page.ToString(); 00478 00479 gridView.DataSource = dynamicMaskData.DataSet.Tables[0]; 00480 gridView.Columns.Clear(); 00481 00482 //ButtonField selectField = new ButtonField(); 00483 //selectField.ButtonType = ButtonType.Link; 00484 //selectField.Text = "Select"; 00485 //selectField.CommandName = "Select"; 00486 //gridView.Columns.Add(selectField); 00487 00488 int columnNumber = 0; 00489 foreach (DataColumn column in dynamicMaskData.DataSet.Tables[0].Columns) 00490 { 00491 00492 if (column.ColumnName != RAIS.Common.Constants.TIME_STAMP_FIELD_NAME) 00493 { 00494 if (columnNumber == 1) 00495 { 00496 ButtonField field = new ButtonField(); 00497 field.ButtonType = ButtonType.Link; 00498 field.HeaderText = ApplicationLogicLayer.Localisation.Translate(column.Caption 00499 , translationContext 00500 , RAIS.Common.Constants.DEFAULT_LANGUAGE 00501 , dynamicMaskData.CurrentUser.Language); 00502 field.DataTextField = column.ColumnName; 00503 field.SortExpression = column.ColumnName; 00504 field.CommandName = "Select"; 00505 gridView.Columns.Add(field); 00506 } 00507 else 00508 { 00509 BoundField field = new BoundField(); 00510 if (columnNumber == 0) // don´t translate column 0 - it is PK .. ID and it is invisible 00511 field.HeaderText = column.Caption; 00512 else 00513 field.HeaderText = ApplicationLogicLayer.Localisation.Translate(column.Caption 00514 , translationContext 00515 , RAIS.Common.Constants.DEFAULT_LANGUAGE 00516 , dynamicMaskData.CurrentUser.Language); 00517 00518 field.DataField = column.ColumnName; 00519 field.SortExpression = column.ColumnName; 00520 gridView.Columns.Add(field); 00521 } 00522 columnNumber++; 00523 } 00524 } 00525 if (dynamicMaskData.DataSet.Tables[0].Columns.Contains(RAIS.Common.Constants.TIME_STAMP_FIELD_NAME) 00526 && dynamicMaskData.DynamicMask.Table.QueryName!=dynamicMaskData.DynamicMask.Table.Name) 00527 { 00528 DataColumn column = dynamicMaskData.DataSet.Tables[0].Columns[RAIS.Common.Constants.TIME_STAMP_FIELD_NAME]; 00529 BoundField field = new BoundField(); 00530 field.HeaderText = ApplicationLogicLayer.Localisation.Translate(column.Caption 00531 , translationContext 00532 , RAIS.Common.Constants.DEFAULT_LANGUAGE 00533 , dynamicMaskData.CurrentUser.Language); 00534 field.DataField = column.ColumnName; 00535 field.SortExpression = column.ColumnName; 00536 gridView.Columns.Add(field); 00537 columnNumber++; 00538 } 00539 gridView.Columns[0].Visible = false; 00540 00541 //ButtonField editField = new ButtonField(); 00542 //editField.ButtonType = ButtonType.Link; 00543 //editField.Text = "View"; 00544 //editField.CommandName = "View"; 00545 //gridView.Columns.Add(editField); 00546 00547 gridView.DataBind(); 00548 } 00549 00550 public static ConsistencyChecks GetConsistencyChecksByDynamicMask(Page page, DynamicMask dynamicMask, bool reset) 00551 { 00552 string tagName = RAIS.UI.Common.Constants.CONSISTENCY_CHECKS_PARAMETERS_TAG; 00553 ConsistencyChecks consistencyChecks = new Dictionary<string, ConsistencyCheck>(); 00554 00555 if (reset) 00556 page.Session[tagName] = null; 00557 00558 if (dynamicMask != null) 00559 { 00560 if (page.Session[tagName] == null) 00561 { 00562 consistencyChecks = RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetConsistencyChecksByDynamicMask(dynamicMask); 00563 page.Session[tagName] = consistencyChecks; 00564 } 00565 else 00566 { 00567 consistencyChecks = (ConsistencyChecks)page.Session[tagName]; 00568 } 00569 } 00570 return consistencyChecks; 00571 } 00572 00573 public static void InitializeConsistencyCheckListByDynamicMask(DropDownList list, DynamicMask dynamicMask) 00574 { 00575 ConsistencyChecks consistencyChecks = GetConsistencyChecksByDynamicMask(list.Page, dynamicMask, true); 00576 00577 string[] consistencyChecksNames = new string[consistencyChecks.Keys.Count]; 00578 consistencyChecks.Keys.CopyTo(consistencyChecksNames, 0); 00579 00580 UI.Common.Controls.InitializeList(list.Items, consistencyChecksNames); 00581 } 00582 00583 public static RecordTypes GetRecordTypes(Page page, bool reset) 00584 { 00585 string tagName = RAIS.UI.Common.Constants.RECORD_TYPES_TAG; 00586 RecordTypes recordTypes = new Dictionary<string, ConsistencyCheck.RecordTypeData>(); 00587 00588 if (reset) 00589 page.Session[tagName] = null; 00590 00591 if (page.Session[tagName] == null) 00592 { 00593 recordTypes = RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetRecordTypes(); 00594 page.Session[tagName] = recordTypes; 00595 } 00596 else 00597 { 00598 recordTypes = (RecordTypes)page.Session[tagName]; 00599 } 00600 00601 return recordTypes; 00602 } 00603 00604 public static void InitializeRecordTypesList(DropDownList list, string selection) 00605 { 00606 InitializeRecordTypesList(list); 00607 00608 // Selected record type could be empty, so add empty row 00609 list.Items.Insert(0, new ListItem(string.Empty, 0.ToString())); 00610 00611 // Select current value 00612 if (list.SelectedItem != null) 00613 list.SelectedItem.Selected = false; 00614 ListItem listItem = list.Items.FindByText(selection); 00615 if (listItem != null) 00616 listItem.Selected = true; 00617 else 00618 list.SelectedIndex = 0; 00619 } 00620 00621 public static void InitializeRecordTypesList(DropDownList list) 00622 { 00623 RecordTypes recordTypes = GetRecordTypes(list.Page, true); 00624 00625 string[] recordTypeNames = new string[recordTypes.Keys.Count]; 00626 recordTypes.Keys.CopyTo(recordTypeNames, 0); 00627 00628 UI.Common.Controls.InitializeList(list.Items, recordTypeNames); 00629 } 00630 00631 public static Dictionary<string, int> GetNonComplianceMajorCategories(Page page, bool reset) 00632 { 00633 string tagName = RAIS.UI.Common.Constants.NON_COMPLIANCE_MAJOR_CATEGORIES_TAG; 00634 Dictionary<string, int> majorCategories = new Dictionary<string, int>(); 00635 00636 if (reset) 00637 page.Session[tagName] = null; 00638 00639 if (page.Session[tagName] == null) 00640 { 00641 majorCategories = RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetNonComplianceMajorCategories(); 00642 page.Session[tagName] = majorCategories; 00643 } 00644 else 00645 { 00646 majorCategories = (Dictionary<string, int>)page.Session[tagName]; 00647 } 00648 00649 return majorCategories; 00650 } 00651 00652 public static void InitializeNonComplianceMajorCategories(DropDownList list) 00653 { 00654 Dictionary<string, int> majorCategories = GetNonComplianceMajorCategories(list.Page, true); 00655 00656 string[] majorCategoriesNames = new string[majorCategories.Keys.Count]; 00657 majorCategories.Keys.CopyTo(majorCategoriesNames, 0); 00658 00659 UI.Common.Controls.InitializeList(list.Items, majorCategoriesNames); 00660 00661 // Selected non-compliance major category could be empty, so add empty row 00662 list.Items.Insert(0, new ListItem(string.Empty, 0.ToString())); 00663 } 00664 00665 public static Dictionary<string, int> GetNonComplianceCategories(Page page, int majorCategoryID, bool reset) 00666 { 00667 string tagName = RAIS.UI.Common.Constants.NON_COMPLIANCE_CATEGORIES_TAG; 00668 Dictionary<string, int> nonComplianceCategories = new Dictionary<string, int>(); 00669 00670 if (reset) 00671 page.Session[tagName] = null; 00672 00673 if (page.Session[tagName] == null) 00674 { 00675 nonComplianceCategories = RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetNonComplianceCategoriesByMajorCategoryID(majorCategoryID); 00676 page.Session[tagName] = nonComplianceCategories; 00677 } 00678 else 00679 { 00680 nonComplianceCategories = (Dictionary<string, int>)page.Session[tagName]; 00681 } 00682 00683 return nonComplianceCategories; 00684 } 00685 00686 public static void InitializeNonComplianceCategories(DropDownList list, int majorCategory) 00687 { 00688 Dictionary<string, int> nonComplianceCategories = GetNonComplianceCategories(list.Page, majorCategory, true); 00689 00690 string[] nonComplianceCategoriesNames = new string[nonComplianceCategories.Keys.Count]; 00691 nonComplianceCategories.Keys.CopyTo(nonComplianceCategoriesNames, 0); 00692 00693 UI.Common.Controls.InitializeList(list.Items, nonComplianceCategoriesNames); 00694 00695 // Selected non-compliance category could be empty, so add empty row 00696 list.Items.Insert(0, new ListItem(string.Empty, 0.ToString())); 00697 } 00698 #endregion 00699 //********************************************************************* 00700 #region Methods for Communication with ALL 00701 00710 public static DynamicMaskData GetDynamicMaskData(int maskID, int tabID, int parentID, UserData currentUser, bool isNewRow) 00711 { 00712 return RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetDynamicMaskData(maskID, tabID, parentID, currentUser, isNewRow); 00713 } 00720 public static void GetSingleListFieldValues(DynamicMaskData dynamicMaskData) 00721 { 00722 RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetSingleListFieldValues(dynamicMaskData); 00723 } 00732 public static List<FieldData> GetCurrentRowFieldsValues(DynamicMaskData dynamicMaskData, int parentID, int rowID) 00733 { 00734 return RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetCurrentRowFieldsValues(dynamicMaskData, parentID, rowID); 00735 } 00742 public static bool GetLookupValues(DynamicMaskData dynamicMaskData, ref string returnMessage) 00743 { 00744 return RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetLookupValues(dynamicMaskData, ref returnMessage); 00745 } 00751 public static void CreateNewRecord(DynamicMaskData dynamicMaskData) 00752 { 00753 RAIS.ApplicationLogicLayer.DynamicMaskManagement.CreateNewRecord(dynamicMaskData); 00754 } 00760 public static bool ValidateConsistencyChecks(DynamicMaskData dynamicMaskData, ref string returnMessage) 00761 { 00762 return RAIS.ApplicationLogicLayer.DynamicMaskManagement.ValidateConsistencyChecks(dynamicMaskData, ref returnMessage); 00763 } 00769 public static bool SaveChanges(DynamicMaskData dynamicMaskData, RAIS.Common.MessageManagement.Message.ModificationType modificationType, RAIS.Common.MessageManagement.Message.ModificationType mainMaskModificationType, ref string actionMessage) 00770 { 00771 return RAIS.ApplicationLogicLayer.DynamicMaskManagement.SaveChanges(dynamicMaskData, modificationType, mainMaskModificationType, ref actionMessage); 00772 } 00778 public static bool DeleteRecord(DynamicMaskData dynamicMaskData, ref string actionMessage) 00779 { 00780 return RAIS.ApplicationLogicLayer.DynamicMaskManagement.DeleteRecord(dynamicMaskData, ref actionMessage); 00781 } 00787 public static void GetChildFiltersLookupValues(DynamicMaskData dynamicMaskData) 00788 { 00789 RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetChildFiltersLookupValues(dynamicMaskData); 00790 } 00796 public static void GetDataSetForListMask(DynamicMaskData dynamicMaskData) 00797 { 00798 RAIS.ApplicationLogicLayer.DynamicMaskManagement.GetDataSetForListMask(dynamicMaskData); 00799 } 00806 public static bool DeleteRecordFromList(DynamicMaskData dynamicMaskData, string keyValue, ref string returnMessage) 00807 { 00808 return RAIS.ApplicationLogicLayer.DynamicMaskManagement.DeleteRecordFromList(dynamicMaskData, keyValue, ref returnMessage); 00809 } 00810 #endregion 00811 //********************************************************************* 00812 #region Public methods 00813 00814 static public string GetDynamicMaskReference(DynamicMaskData dynamicMaskData, object sender, int maskID, int parentID, int rowID, bool addRowMode) 00815 { 00816 int tabID = 0; 00817 00818 for (int i = 0; i < dynamicMaskData.DynamicMasks.Count; i++) 00819 if (dynamicMaskData.DynamicMasks[i].ControlName == ((HtmlAnchor)sender).ID) 00820 { 00821 tabID = i; 00822 break; 00823 } 00824 00825 if (tabID == 1) 00826 rowID = parentID; 00827 00828 return GetDynamicMaskReference(dynamicMaskData, maskID, tabID, parentID, rowID, addRowMode); 00829 } 00830 00831 static public string GetDynamicMaskReference(DynamicMaskData dynamicMaskData, int maskID, int tabID, int parentID, int rowID, bool addRowMode) 00832 { 00833 return string.Format("{0}?{1}={2}&{3}={4}&{5}={6}&{7}={8}&{9}={10}" 00834 , dynamicMaskData.DynamicMasks[tabID].Reference 00835 , Constants.MASK_ID_PARAMETER_NAME 00836 , maskID 00837 , Constants.TAB_ID_PARAMETER_NAME 00838 , tabID 00839 , Constants.PARENT_ID_PARAMETER_NAME 00840 , parentID 00841 , Constants.ROW_ID_PARAMETER_NAME 00842 , rowID 00843 , Constants.ADD_ROW_FORM_MODE_PARAMETER_NAME 00844 , addRowMode 00845 ); 00846 } 00847 00848 static public string GetDynamicMaskMainReference(DynamicMaskData dynamicMaskData, int maskID) 00849 { 00850 return string.Format("{0}?{1}={2}" 00851 , dynamicMaskData.DynamicMasks[0].Reference 00852 , Constants.MASK_ID_PARAMETER_NAME 00853 , maskID 00854 ); 00855 } 00856 00857 static public UserManagement.AccessRight GetPageAccessRights(Page page, DynamicMaskData dynamicMaskData, int id) 00858 { 00859 UserManagement.AccessRight accessRight = null; 00860 00861 PageAccessRights pageAccessRights = (PageAccessRights)page.Session[UI.Common.Constants.PAGE_ACCESS_RIGHTS_TAG]; 00862 if (pageAccessRights != null) 00863 { 00864 string key = GetDynamicMaskMainReference(dynamicMaskData, id); 00865 00866 if (pageAccessRights.ContainsKey(key)) 00867 { 00868 accessRight = pageAccessRights[key]; 00869 } 00870 } 00871 00872 return accessRight; 00873 } 00874 00875 static public void SetPreselectedFilter(DynamicMaskData dynamicMaskData, Facility selectedFacility, Department selectedDepartment) 00876 { 00877 dynamicMaskData.SelectedFacilityID = (selectedFacility == null) ? 0 : selectedFacility.ID; 00878 dynamicMaskData.SelectedFacilityName = (selectedFacility == null) ? "" : selectedFacility.Name; 00879 00880 dynamicMaskData.SelectedDepartmentID = (selectedDepartment == null) ? 0 : selectedDepartment.ID; 00881 dynamicMaskData.SelectedDepartmentName = (selectedDepartment == null) ? "" : selectedDepartment.Name; 00882 } 00883 00884 static public void SetPreselectedFilterText(DynamicMaskData dynamicMaskData, Label lblFacility, Label lblDepartment) 00885 { 00886 lblFacility.Text = dynamicMaskData.SelectedFacilityName; 00887 lblDepartment.Text = dynamicMaskData.SelectedDepartmentName; 00888 } 00889 00890 static public void SetFacilityFieldPreselectedValue(DynamicMaskData dynamicMaskData) 00891 { 00892 if (dynamicMaskData.SelectedFacilityID != 0) 00893 { 00894 foreach (FieldData fieldData in dynamicMaskData.CurrentRowValues) 00895 { 00896 if (fieldData.Field.RelatedTable != null 00897 && fieldData.Field.RelatedTable.Name == RAIS.Common.Constants.FACILITY_PARAMETER_NAME) 00898 { 00899 fieldData.CurrentLookupValue = dynamicMaskData.SelectedFacilityID; 00900 fieldData.CurrentLookupText = dynamicMaskData.SelectedFacilityName; 00901 fieldData.RaisedPostback = true; 00902 break; 00903 } 00904 } 00905 } 00906 } 00907 00908 static public void SetDepartmentFieldPreselectedValue(DynamicMaskData dynamicMaskData) 00909 { 00910 if (dynamicMaskData.SelectedDepartmentID != 0) 00911 { 00912 foreach (FieldData fieldData in dynamicMaskData.CurrentRowValues) 00913 { 00914 if (fieldData.Field.RelatedTable != null 00915 && fieldData.Field.RelatedTable.Name == RAIS.Common.Constants.DEPARTMENT_PARAMETER_NAME) 00916 { 00917 fieldData.CurrentLookupValue = dynamicMaskData.SelectedDepartmentID; 00918 fieldData.CurrentLookupText = dynamicMaskData.SelectedDepartmentName; 00919 fieldData.RaisedPostback = true; 00920 break; 00921 } 00922 } 00923 } 00924 } 00925 00926 static public string GetNationalDateFormatString(bool withTime) 00927 { 00928 if (withTime) 00929 return string.Format(" ({0} HH:mm)" 00930 , System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern); 00931 else 00932 return string.Format(" ({0})" 00933 , System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern); 00934 } 00941 public static bool ValidateFilterControlsValues(System.Web.UI.HtmlControls.HtmlTable table, DynamicMaskData dynamicMaskData, ref string returnMessage) 00942 { 00943 bool success = true; 00944 int rowNumber = 0; 00945 00946 foreach (KeyValuePair<int, DynamicMaskFilterData> kvp in dynamicMaskData.FiltersData) 00947 { 00948 DynamicMaskFilterData filterData = kvp.Value; 00949 00950 if (filterData.DynamicMaskFilter.VisibleOnForm) 00951 { 00952 if (filterData.DynamicMaskFilter.Type == DynamicMaskFilter.FilterType.DatesRage) 00953 { 00954 DateTime dateFrom; 00955 DateTime dateUntil; 00956 IFormatProvider culture = System.Globalization.CultureInfo.CurrentCulture; 00957 00958 TextBox textBoxFrom = (TextBox)table.Rows[rowNumber].Cells[1].Controls[0]; 00959 success &= DateTime.TryParse(textBoxFrom.Text, culture, DateTimeStyles.None, out dateFrom); 00960 00961 TextBox textBoxUntil = (TextBox)table.Rows[rowNumber].Cells[1].Controls[3]; 00962 success &= DateTime.TryParse(textBoxUntil.Text, culture, DateTimeStyles.None, out dateUntil); 00963 00964 if (!success) 00965 { 00966 returnMessage = RAIS.Common.Messages.WRONG_DATE_VALUE; 00967 break; 00968 } 00969 00970 // Restriction of SQL Server 00971 if (dateFrom < filterData.SqlMinDateValue 00972 || dateUntil < filterData.SqlMinDateValue) 00973 { 00974 success = false; 00975 returnMessage = string.Format(RAIS.Common.Messages.WRONG_MIN_DATE_VALUE, filterData.SqlMinDateValue.ToShortDateString()); 00976 break; 00977 } 00978 00979 if (dateFrom > dateUntil) 00980 { 00981 success = false; 00982 returnMessage = string.Format(RAIS.Common.Messages.WRONG_DATE_RANGE_VALUES, dateUntil.ToShortDateString(), dateFrom.ToShortDateString()); 00983 break; 00984 } 00985 } 00986 00987 rowNumber++; 00988 } 00989 } 00990 return success; 00991 } 00992 #endregion 00993 //********************************************************************* 00994 #region Private methods 00995 static DynamicMaskFilterData FindFilterDataByControlName(DynamicMaskData dynamicMaskData, object sender) 00996 { 00997 DynamicMaskFilterData filterData = null; 00998 00999 string controlName = ((DropDownList)sender).ID; 01000 01001 foreach (KeyValuePair<int, DynamicMaskFilterData> kvp in dynamicMaskData.FiltersData) 01002 { 01003 if (kvp.Value.ControlName == controlName) 01004 { 01005 filterData = kvp.Value; 01006 break; 01007 } 01008 } 01009 01010 return filterData; 01011 } 01012 01013 static int GetFilterRowNumber(DynamicMaskData dynamicMaskData, DynamicMaskFilterData filterData) 01014 { 01015 int number = -1; 01016 int i = 0; 01017 foreach (KeyValuePair<int, DynamicMaskFilterData> kvp in dynamicMaskData.FiltersData) 01018 { 01019 if (kvp.Value == filterData) 01020 { 01021 number = i; 01022 break; 01023 } 01024 i++; 01025 } 01026 01027 return number; 01028 } 01029 #endregion 01030 } 01031 }